package com.lmn.statemachine;

import org.springframework.statemachine.StateContext;
import org.springframework.statemachine.action.Action;

/**
 * Action 可以用来在状态机的状态转换过程中实现自定义逻辑，如数据库操作，日志记录等
 * 注意：如果 Action 执行过程中出现了异常，状态机的状态是不会发生变化的
 */
public class PersonRealNameAction implements Action<CompanyStatus, CompanyEvents> {

    @Override
    public void execute(StateContext<CompanyStatus, CompanyEvents> context) {
        // 获取消息中的订单对象
        User user = (User) context.getMessage().getHeaders().get("user");
        assert user != null;
        System.out.println("个人实名(" + user.getName() + ")......");
        if ("李四".equals(user.getName())) {
            throw new RuntimeException("运行时错误!");
        }
    }
}
